package com.jadyer.seed.mpp.sdk.weixin.constant;

/**
 * 微信公众平台全局返回码
 * @see http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html
 * @create Nov 26, 2015 10:38:31 PM
 * @author 玄玉<https://jadyer.cn/>
 */
public enum WeixinCodeEnum {
    WEIXIN_MINUS_1 (-1,    "系统繁忙，此时请开发者稍候再试"),
    WEIXIN_0       (0,     "请求成功"),
    WEIXIN_40001   (40001, "获取access_token时AppSecret错误，或者access_token无效。请开发者认真比对AppSecret的正确性，或查看是否正在为恰当的公众号调用接口"),
    WEIXIN_40002   (40002, "不合法的凭证类型"),
    WEIXIN_40003   (40003, "不合法的OpenID，请开发者确认OpenID（该用户）是否已关注公众号，或是否是其他公众号的OpenID"),
    WEIXIN_40004   (40004, "不合法的媒体文件类型"),
    WEIXIN_40005   (40005, "不合法的文件类型"),
    WEIXIN_40006   (40006, "不合法的文件大小"),
    WEIXIN_40007   (40007, "不合法的媒体文件id"),
    WEIXIN_40008   (40008, "不合法的消息类型"),
    WEIXIN_40009   (40009, "不合法的图片文件大小"),
    WEIXIN_40010   (40010, "不合法的语音文件大小"),
    WEIXIN_40011   (40011, "不合法的视频文件大小"),
    WEIXIN_40012   (40012, "不合法的缩略图文件大小"),
    WEIXIN_40013   (40013, "不合法的AppID，请开发者检查AppID的正确性，避免异常字符，注意大小写"),
    WEIXIN_40014   (40014, "不合法的access_token，请开发者认真比对access_token的有效性（如是否过期），或查看是否正在为恰当的公众号调用接口"),
    WEIXIN_40015   (40015, "不合法的菜单类型"),
    WEIXIN_40016   (40016, "不合法的按钮个数"),
    WEIXIN_40017   (40017, "不合法的按钮个数"),
    WEIXIN_40018   (40018, "不合法的按钮名字长度"),
    WEIXIN_40019   (40019, "不合法的按钮KEY长度"),
    WEIXIN_40020   (40020, "不合法的按钮URL长度"),
    WEIXIN_40021   (40021, "不合法的菜单版本号"),
    WEIXIN_40022   (40022, "不合法的子菜单级数"),
    WEIXIN_40023   (40023, "不合法的子菜单按钮个数"),
    WEIXIN_40024   (40024, "不合法的子菜单按钮类型"),
    WEIXIN_40025   (40025, "不合法的子菜单按钮名字长度"),
    WEIXIN_40026   (40026, "不合法的子菜单按钮KEY长度"),
    WEIXIN_40027   (40027, "不合法的子菜单按钮URL长度"),
    WEIXIN_40028   (40028, "不合法的自定义菜单使用用户"),
    WEIXIN_40029   (40029, "不合法的oauth_code"),
    WEIXIN_40030   (40030, "不合法的refresh_token"),
    WEIXIN_40031   (40031, "不合法的openid列表"),
    WEIXIN_40032   (40032, "不合法的openid列表长度"),
    WEIXIN_40033   (40033, "不合法的请求字符，不能包含\\uxxxx格式的字符"),
    WEIXIN_40035   (40035, "不合法的参数"),
    WEIXIN_40038   (40038, "不合法的请求格式"),
    WEIXIN_40039   (40039, "不合法的URL长度"),
    WEIXIN_40050   (40050, "不合法的分组id"),
    WEIXIN_40051   (40051, "分组名字不合法"),
    WEIXIN_40117   (40117, "分组名字不合法"),
    WEIXIN_40118   (40118, "media_id大小不合法"),
    WEIXIN_40119   (40119, "button类型错误"),
    WEIXIN_40120   (40120, "button类型错误"),
    WEIXIN_40121   (40121, "不合法的media_id类型"),
    WEIXIN_40132   (40132, "微信号不合法"),
    WEIXIN_40137   (40137, "不支持的图片格式"),
    WEIXIN_41001   (41001, "缺少access_token参数"),
    WEIXIN_41002   (41002, "缺少appid参数"),
    WEIXIN_41003   (41003, "缺少refresh_token参数"),
    WEIXIN_41004   (41004, "缺少secret参数"),
    WEIXIN_41005   (41005, "缺少多媒体文件数据"),
    WEIXIN_41006   (41006, "缺少media_id参数"),
    WEIXIN_41007   (41007, "缺少子菜单数据"),
    WEIXIN_41008   (41008, "缺少oauth code"),
    WEIXIN_41009   (41009, "缺少openid"),
    WEIXIN_42001   (42001, "access_token超时，请检查access_token的有效期，请参考基础支持-获取access_token中，对access_token的详细机制说明"),
    WEIXIN_42002   (42002, "refresh_token超时"),
    WEIXIN_42003   (42003, "oauth_code超时"),
    WEIXIN_43001   (43001, "需要GET请求"),
    WEIXIN_43002   (43002, "需要POST请求"),
    WEIXIN_43003   (43003, "需要HTTPS请求"),
    WEIXIN_43004   (43004, "需要接收者关注"),
    WEIXIN_43005   (43005, "需要好友关系"),
    WEIXIN_44000   (44001, "多媒体文件为空"),
    WEIXIN_44002   (44002, "POST的数据包为空"),
    WEIXIN_44003   (44003, "图文消息内容为空"),
    WEIXIN_44004   (44004, "文本消息内容为空"),
    WEIXIN_45001   (45001, "多媒体文件大小超过限制"),
    WEIXIN_45002   (45002, "消息内容超过限制"),
    WEIXIN_45003   (45003, "标题字段超过限制"),
    WEIXIN_45004   (45004, "描述字段超过限制"),
    WEIXIN_45005   (45005, "链接字段超过限制"),
    WEIXIN_45006   (45006, "图片链接字段超过限制"),
    WEIXIN_45007   (45007, "语音播放时间超过限制"),
    WEIXIN_45008   (45008, "图文消息超过限制"),
    WEIXIN_45009   (45009, "接口调用超过限制"),
    WEIXIN_45010   (45010, "创建菜单个数超过限制"),
    WEIXIN_45015   (45015, "回复时间超过限制"),
    WEIXIN_45016   (45016, "系统分组，不允许修改"),
    WEIXIN_45017   (45017, "分组名字过长"),
    WEIXIN_45018   (45018, "分组数量超过上限"),
    WEIXIN_46001   (46001, "不存在媒体数据"),
    WEIXIN_46002   (46002, "不存在的菜单版本"),
    WEIXIN_46003   (46003, "不存在的菜单数据"),
    WEIXIN_46004   (46004, "不存在的用户"),
    WEIXIN_47001   (47001, "解析JSON/XML内容错误"),
    WEIXIN_48001   (48001, "api功能未授权，请确认公众号已获得该接口，可以在公众平台官网-开发者中心页中查看接口权限"),
    WEIXIN_50001   (50001, "用户未授权该api"),
    WEIXIN_50002   (50002, "用户受限，可能是违规后接口被封禁"),
    WEIXIN_61451   (61451, "参数错误(invalid parameter)"),
    WEIXIN_61452   (61452, "无效客服账号(invalid kf_account)"),
    WEIXIN_61453   (61453, "客服帐号已存在(kf_account exsited)"),
    WEIXIN_61454   (61454, "客服帐号名长度超过限制(仅允许10个英文字符，不包括@及@后的公众号的微信号)(invalid kf_acount length)"),
    WEIXIN_61455   (61455, "客服帐号名包含非法字符(仅允许英文+数字)(illegal character in kf_account)"),
    WEIXIN_61456   (61456, "客服帐号个数超过限制(10个客服账号)(kf_account count exceeded)"),
    WEIXIN_61457   (61457, "无效头像文件类型(invalid file type)"),
    WEIXIN_61450   (61450, "系统错误(system error)"),
    WEIXIN_61500   (61500, "日期格式错误"),
    WEIXIN_61501   (61501, "日期范围错误"),
    WEIXIN_9001001 (9001001, "POST数据参数不合法"),
    WEIXIN_9001002 (9001002, "远端服务不可用"),
    WEIXIN_9001003 (9001003, "Ticket不合法"),
    WEIXIN_9001004 (9001004, "获取摇周边用户信息失败"),
    WEIXIN_9001005 (9001005, "获取商户信息失败"),
    WEIXIN_9001006 (9001006, "获取OpenID失败"),
    WEIXIN_9001007 (9001007, "上传文件缺失"),
    WEIXIN_9001008 (9001008, "上传素材的文件类型不合法"),
    WEIXIN_9001009 (9001009, "上传素材的文件尺寸不合法"),
    WEIXIN_9001010 (9001010, "上传失败"),
    WEIXIN_9001020 (9001020, "帐号不合法"),
    WEIXIN_9001021 (9001021, "已有设备激活率低于50%，不能新增设备"),
    WEIXIN_9001022 (9001022, "设备申请数不合法，必须为大于0的数字"),
    WEIXIN_9001023 (9001023, "已存在审核中的设备ID申请"),
    WEIXIN_9001024 (9001024, "一次查询设备ID数量不能超过50"),
    WEIXIN_9001025 (9001025, "设备ID不合法"),
    WEIXIN_9001026 (9001026, "页面ID不合法"),
    WEIXIN_9001027 (9001027, "页面参数不合法"),
    WEIXIN_9001028 (9001028, "一次删除页面ID数量不能超过10"),
    WEIXIN_9001029 (9001029, "页面已应用在设备中，请先解除应用关系再删除"),
    WEIXIN_9001030 (9001030, "一次查询页面ID数量不能超过50"),
    WEIXIN_9001031 (9001031, "时间区间不合法"),
    WEIXIN_9001032 (9001032, "保存设备与页面的绑定关系参数错误"),
    WEIXIN_9001033 (9001033, "门店ID不合法"),
    WEIXIN_9001034 (9001034, "设备备注信息过长"),
    WEIXIN_9001035 (9001035, "设备申请参数不合法"),
    WEIXIN_9001036 (9001036, "查询起始值begin不合法");

    private final int code;
    private final String msg;

    WeixinCodeEnum(int code, String msg){
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    /**
     * 通过枚举code获取对应的message
     * @return 取不到时返回null
     */
    public static String getMsgByCode(int code){
        for(WeixinCodeEnum weixinCodeEnum : values()){
            if(weixinCodeEnum.getCode() == code){
                return weixinCodeEnum.getMsg();
            }
        }
        return null;
    }
}